/**
 * @desc 定义一些全局公用的方法
 * @author 大志
 * @update kyle
 * @date 2019-07-31
 * @inrto
 */
import { Toast } from 'vant'
import router from '../router'
import cookies from 'vue-cookies'
import { LocalDomain } from './url.js'
import GetWxJsConfig from './wechatFunc.js'
import Vue from 'vue'
export default {
  // 功能未开发Toast
  unfinish() {
    Toast({
      message: '功能还在开发当中哦！',
      icon: 'smile-opt',
      duration: 1000
    })
  },
  // 返回上一页(如果没有上一页就返回首页)
  back(currentPath) {
    console.log(currentPath)
    const docRef = document.referrer ? document.referrer.toLowerCase() : ''
    const domain = (location.protocol + '//' + location.host).toLowerCase()
    if (docRef) {
      if (docRef.indexOf(domain) < 0) { // 非当前站点下
        if (history.length > 2) {
          history.go(-2)
        } else {
          this.goHome(currentPath)
        }
      } else if (docRef.indexOf('/login') < 0 && docRef.indexOf('/register') < 0) {
        if (history.length > 1) {
          history.back()
        } else {
          this.goHome(currentPath)
        }
      } else {
        this.goHome(currentPath)
      }
    } else {
      this.goHome(currentPath)
    }
  },
  goHome(currentPath) {
    if (currentPath === sessionStorage.getItem('firstPage')) {
      sessionStorage.removeItem('firstPage')
      if (Vue.prototype.$webInfo && Vue.prototype.$webInfo.HomeIndex) {
        window.location.href = LocalDomain + Vue.prototype.$webInfo.HomeIndex
      } else {
        window.location.href = LocalDomain + '/m/user/usercard'
      }
    } else {
      router.go(-1)
    }
  },
  // 获取url里面的参数
  getUrlKey(name) {
    return (
      unescape((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ''])[1].replace(/\+/g, '%20')) || null
    )
  },
  getAccesstoken(name) {
    return (
      decodeURI(
        (new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ''])[1].replace(/%20/g, '+').replace(/%2F/g, '/')
      ) || null
    )
  },
  // 数组模糊查询
  arrayFuzzyQuery(list, keyWord) {
    const arr = []
    for (let i = 0, len = list.length; i < len; i++) {
      if (list[i].indexOf(keyWord) >= 0) {
        arr.push(list[i])
      }
    }
    return arr
  },
  // 表单验证
  formValidate(form) {
    for (const key in form) {
      // console.log(key + "---" + form[key].value);
      // 为空判断
      if (form[key].require) {
        if (form[key].value.trim() == '') {
          if (form[key].requireMessage) {
            return {
              valid: false,
              msg: form[key].requireMessage
            }
          } else {
            return {
              valid: false,
              msg: form[key].label ? form[key].label + '不能为空' : key + '不能为空'
            }
          }
        }
      }
      // pattern判断
      if (form[key].pattern) {
        if (!form[key].pattern.test(form[key].value)) {
          if (form[key].patternMessage) {
            return {
              valid: false,
              msg: form[key].patternMessage
            }
          } else {
            return {
              valid: false,
              msg: form[key].label ? form[key].label + '的格式不正确' : key + '的格式不正确'
            }
          }
        }
      }
      // 字符串最小长度
      if (form[key].minLength) {
        if (form[key].value.length < parseInt(form[key].minLength)) {
          if (form[key].minLengthMessage) {
            return {
              valid: false,
              msg: form[key].minLengthMessage
            }
          } else {
            return {
              valid: false,
              msg: form[key].label
                ? form[key].label + '的长度至少为' + parseInt(form[key].minLength) + '位'
                : key + '的长度至少为' + parseInt(form[key].minLength) + '位'
            }
          }
        }
      }
    }
    return {
      valid: true
    }
  },
  // 日期加上天数得到新的日期
  getNewData(date, days) {  
    //  var dateTemp = dateTemp.split("-");  
    //  var nDate = new Date(dateTemp[1] + '-' + dateTemp[2] + '-' + dateTemp[0]); //转换为MM-DD-YYYY格式    
    //  var millSeconds = Math.abs(nDate) + (days * 24 * 60 * 60 * 1000);  
    //  var rDate = new Date(millSeconds);  
    //  var year = rDate.getFullYear();  
    //  var month = rDate.getMonth() + 1;  
    //  if (month < 10) month = "0" + month;  
    //  var date = rDate.getDate();  
    //  if (date < 10) date = "0" + date;  
    //  return (year + "-" + month + "-" + date);  
        var date = new Date(date);
      date.setDate(date.getDate() + days);
        var month = date.getMonth() + 1;
      var day = date.getDate();
      var mm = "'" + month + "'";
      var dd = "'" + day + "'";
      //单位数前面加0
      if(mm.length == 3) {
          month = "0" + month;
      }
      if(dd.length == 3) {
          day = "0" + day;
      }
      var time = date.getFullYear() + "-" + month + "-" + day
      return time;
  },
  // 十分秒时间戳
  countDown(time) {
      var s = 0;
      var hour = time.split(':')[0];
      var min = time.split(':')[1];
      var sec = time.split(':')[2];
      s = Number(hour * 3600) + Number(min * 60) + Number(sec);
      return s;
  },
  /** 获取星期几**/
  getCurrentweek(myDate) {
    var days = myDate.getDay()
    switch (days) {
      case 1:
        days = '星期一'
        break
      case 2:
        days = '星期二'
        break
      case 3:
        days = '星期三'
        break
      case 4:
        days = '星期四'
        break
      case 5:
        days = '星期五'
        break
      case 6:
        days = '星期六'
        break
      case 0:
        days = '星期日'
        break
    }
    return days
  },
  getDays(strDateStart,strDateEnd){
     var strSeparator = "-"; //日期分隔符
     var oDate1;
     var oDate2;
     var iDays;
     oDate1= strDateStart.split(strSeparator);
     oDate2= strDateEnd.split(strSeparator);
     var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]);
     var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]);
     iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24);//把相差的毫秒数转换为天数
     return iDays ;
  },
	
  time(date) {
      var y = date.getFullYear()
      var m = date.getMonth() + 1
      m = m < 10 ? '0' + m : m
      var d = date.getDate()
      d = d < 10 ? '0' + d : d
      var h = date.getHours()
      h = h < 10 ? '0' + h : h
      var minute = date.getMinutes()
      minute = minute < 10 ? '0' + minute : minute
      var second = date.getSeconds()
      second = second < 10 ? '0' + second : second
      return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second
    },
  /**
   * 时间格式化
   * @param {格式} format     yyyymmddHHMMSS 大小写要求严格
   * @param {需要格式化的时间} date
   */
  dateFomat(format, date) {
    const opt = {
      'y+': date.getFullYear().toString(), // 年
      'm+': (date.getMonth() + 1).toString(), // 月
      'd+': date.getDate().toString(), // 日
      'H+': date.getHours().toString(), // 时
      'M+': date.getMinutes().toString(), // 分
      'S+': date.getSeconds().toString() // 秒
      // 有其他格式化字符需求可以继续添加，必须转化成字符串
    }
    if (/(y+)/.test(format)) {
      format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
    }

    for (var k in opt) {
      if (new RegExp('(' + k + ')').test(format)) {
        format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? opt[k] : ('00' + opt[k]).substr(('' + opt[k]).length))
      }
    }
    return format
  },
  /**
   * 时间区间选择
   */
  today() {
    const startDate = this.dateFomat('yyyy-mm-dd', new Date())
    const endDate = this.dateFomat('yyyy-mm-dd', new Date())
    return { startDate, endDate }
  },
  yesterday() {
    const yesterday = new Date(new Date().setDate(new Date().getDate() - 1))
    const startDate = this.dateFomat('yyyy-mm-dd', yesterday)
    const endDate = this.dateFomat('yyyy-mm-dd', yesterday)
    return { startDate, endDate }
  },
  tomorrow() {
    const tomorrow = new Date(new Date().setDate(new Date().getDate() + 1))
    const startDate = this.dateFomat('yyyy-mm-dd', tomorrow)
    const endDate = this.dateFomat('yyyy-mm-dd', tomorrow)
    return { startDate, endDate }
  },
  houtian() {
    const houtian = new Date(new Date().setDate(new Date().getDate() + 2))
    const startDate = this.dateFomat('yyyy-mm-dd', houtian)
    const endDate = this.dateFomat('yyyy-mm-dd', houtian)
    return { startDate, endDate }
  },
	lastWeek() {
    const weekday = new Date().getDay() || 7
		const thisweek = new Date(new Date().setDate(new Date().getDate() - weekday - 6 ))
    const thisweek1 = new Date(new Date().setDate(new Date().getDate() - weekday))
    const startDate = this.dateFomat('yyyy-mm-dd', thisweek)
    const endDate = this.dateFomat('yyyy-mm-dd', thisweek1)
    return { startDate, endDate }
  },
  thisWeek() {
    const weekday = new Date().getDay() || 7
    const thisweek1 = new Date(new Date().setDate(new Date().getDate() - weekday + 1))
    const startDate = this.dateFomat('yyyy-mm-dd', thisweek1)
    const endDate = this.dateFomat('yyyy-mm-dd', new Date())
    return { startDate, endDate }
  },
  thisMonth() {
    const thismonth1 = new Date(new Date().setDate(1))
    const startDate = this.dateFomat('yyyy-mm-dd', thismonth1)
    const endDate = this.dateFomat('yyyy-mm-dd', new Date())
    return { startDate, endDate }
  },
  lastMonthE() {
    const nowDate = new Date()
    let y = nowDate.getFullYear()
    let m = nowDate.getMonth()
    if (m === 0) {
      m = 12
      y = y - 1
    }
    const _start = new Date(y, m - 1, 1)
    const _end = new Date(y, m, 0)
    const startDate = this.dateFomat('yyyy-mm-dd', _start)
    const endDate = this.dateFomat('yyyy-mm-dd', _end)
    return { startDate, endDate }
  },
  // 最近30天
  last30() {
    const _time = new Date()
    _time.setTime(_time.getTime() - (24 * 60 * 60 * 1000 * 30))
    const startDate = this.dateFomat('yyyy-mm-dd', _time)
    const endDate = this.dateFomat('yyyy-mm-dd', new Date())
    return { startDate, endDate }
  },
	//
	last3month() {
    const _time = new Date()
    _time.setTime(_time.getTime() - (24 * 60 * 60 * 1000 * 90))
    const startDate = this.dateFomat('yyyy-mm-dd', _time)
    const endDate = this.dateFomat('yyyy-mm-dd', new Date())
    return { startDate, endDate }
  },
  thisYear() {
    const thisyear = new Date(new Date().getFullYear(), 0, 1)
    const startDate = this.dateFomat('yyyy-mm-dd', thisyear)
    const endDate = this.dateFomat('yyyy-mm-dd', new Date())
    return { startDate, endDate }
  },
  chooseMonth(date) {
    const monthStart = new Date(date.setDate(1))
    const y = this.dateFomat('yyyy', date)
    const m = this.dateFomat('m', date)
    const d = new Date(y, m, 0).getDate()
    const monthEnd = new Date(y, m - 1, d)
    const startDate = this.dateFomat('yyyy-mm-dd', monthStart)
    const endDate = this.dateFomat('yyyy-mm-dd', monthEnd)
    return { startDate, endDate }
  },
  // 当月（结束时间为下月1号）
  thisMonthS() {
    const thismonth1 = new Date(new Date().setDate(1))
    const startDate = this.dateFomat('yyyy-mm-dd', thismonth1)
    let y = thismonth1.getFullYear()
    let m = thismonth1.getMonth()
    if (m === 11) {
      m = -1
      y = y + 1
    }
    const _lastMonth = new Date(y, m + 1)
    const endDate = this.dateFomat('yyyy-mm-dd', _lastMonth)
    return { startDate, endDate }
  },
  // 结束时间为下月1号
  chooseMonthS(date) {
    const monthStart = new Date(date.setDate(1))
    let y = date.getFullYear()
    let m = date.getMonth()
    if (m === 11) {
      m = -1
      y = y + 1
    }
    const monthEnd = new Date(y, m + 1)
    const startDate = this.dateFomat('yyyy-mm-dd', monthStart)
    const endDate = this.dateFomat('yyyy-mm-dd', monthEnd)
    return { startDate, endDate }
  },

  // 获取上月年月(返回示例“2021-03”)
  lastMonth() {
    const nowDate = new Date()
    let y = nowDate.getFullYear()
    let m = nowDate.getMonth()
    if (m === 0) {
      m = 12
      y = y - 1
    }
    const _lastMonth = new Date(y, m - 1)
    const _data = this.dateFomat('yyyy-mm', _lastMonth)
    return _data
  },

  // 获取指定字符串后面的所有字符内容
  getCaption(str, key) {
    var index = str.lastIndexOf(key)
    str = str.substring(index + key.length, str.length)
    return str
  },

  // 格式化金额（保留两位小数，满千加','
  changePrice2money(s) {
    s = Math.round(s * 100) / 100
    s = s.toString()
    s = s.replace(/^(\d*)$/, '$1.')
    s = (s + '00').replace(/(\d*\.\d\d)\d*/, '$1')
    s = s.replace('.', ',')
    var re = /(\d)(\d{3},)/
    while (re.test(s)) s = s.replace(re, '$1,$2')
    s = s.replace(/,(\d\d)$/, '.$1')
    return s.replace(/^\./, '0.')
  },

  // 懒加载方法

  /**
   * 获取滚动条当前的位置
   * @param {*} id 指定div的id（不填则默认为document）
   */
  getScrollTop(id) {
    var scrollTop = 0
    if (id) {
      // 指定div滚动条
      scrollTop = document.querySelector('#' + id).scrollTop
    } else {
      if (document.documentElement && document.documentElement.scrollTop) {
        scrollTop = document.documentElement.scrollTop
      } else if (document.body) {
        scrollTop = document.body.scrollTop
      }
    }
    // console.log('scrollTop:' + scrollTop)
    return scrollTop
  },

  /**
   * 获取当前可视范围的高度
   * @param {*} id 指定div的id（不填则默认为document）
   */
  getClientHeight(id) {
    var clientHeight = 0
    if (id) {
      // 指定div滚动条
      clientHeight = document.querySelector('#' + id).clientHeight
    } else {
      if (document.body.clientHeight && document.documentElement.clientHeight) {
        clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight)
      } else {
        clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight)
      }
    }
    // console.log('clientHeight:' + clientHeight)
    return clientHeight
  },

  /**
   * 获取文档完整的高度
   * @param {*} id 指定div的id（不填则默认为document）
   */
  getScrollHeight(id) {
    var scrollHeight = 0
    if (id) {
      // 指定div滚动条
      scrollHeight = document.querySelector('#' + id).scrollHeight
    } else {
      scrollHeight = Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)
    }
    // console.log(scrollHeight)
    return scrollHeight
  },

  // 获取网址的参数
  getAllUrlParams(url) {
    // get query string from url (optional) or window
    var queryString = url ? url.split('?')[1] : window.location.search.slice(1)
    console.log(queryString)

    // we'll store the parameters here
    var obj = {}

    // if query string exists
    if (queryString) {
      // stuff after # is not part of query string, so get rid of it
      queryString = queryString.split('#')[0]

      // split our query string into its component parts
      var arr = queryString.split('&')
      console.log(arr)
      for (var i = 0; i < arr.length; i++) {
        // separate the keys and the values
        var a = arr[i].split('=')
        // in case params look like: list[]=thing1&amp;list[]=thing2
        var paramNum = undefined
        var paramName = a[0].replace(/\[\d*\]/, function (v) {
          paramNum = v.slice(1, -1)
          return ''
        })
        // set parameter value (use 'true' if empty)
        var paramValue = typeof arr[i].replace(paramName + '=', '') === 'undefined' ? true : arr[i].replace(paramName + '=', '')
        // if parameter name already exists
        if (obj[paramName]) {
          // convert value to array (if still string)
          if (typeof obj[paramName] === 'string') {
            obj[paramName] = [obj[paramName]]
          }
          // if no array index number specified...
          if (typeof paramNum === 'undefined') {
            // put the value on the end of the array
            obj[paramName].push(paramValue)
          }
          // if array index number specified...
          else {
            // put the value at that index number
            obj[paramName][paramNum] = paramValue
          }
        }
        // if param name doesn't exist yet, set it
        else {
          obj[paramName] = paramValue
        }
      }
    }
    return obj
  },

  /**
   * app保存图片
   * @param {*} url 需要下载的图片url地址
   * @param {*} fileName 图片保存名称，为空则使用原图片名称
   * @param {*} callbackMethod 自定义回调函数，返回函数定义在最外层
   */
  downFile(url, fileName) {
    if (typeof hsy_app_obj !== 'undefined') {
      window.callbackMethod = function (res) {
        if (res) {
          Toast.success('保存成功')
        } else {
          Toast.fail('保存失败')
        }
      }
      hsy_app_obj.DownFile(url, fileName, 'callbackMethod')
    } else {
      Toast({
        message: '此环境不支持保存图片！',
        icon: 'smile-opt',
        duration: 1000
      })
    }
  },

  /**
   * 单图分享
   * @param {*} platform 要分享平台值，固定值（WEIXIN，WEIXIN_TIMELINE，QQ，QZONE，SINA）
   * @param {*} imageurl 分享图片
   * @param {*} callbackMethod 自定义回调函数，返回函数定义在最外层
   */
  ShareImgByPlatfrom(platform, imageurl, callbackMethod) {
    if (typeof hsy_app_obj !== 'undefined') {
      hsy_app_obj.ShareImgByPlatfrom(platform, imageurl, callbackMethod)
    } else {
      Toast({
        message: '此环境不支持分享！',
        icon: 'smile-opt',
        duration: 1000
      })
    }
  },

  // 扫码
  Qcode(type, callbackMethod) {
    if (typeof hsy_app_obj !== 'undefined') {
      hsy_app_obj.Qcode(type, callbackMethod)
    } else if (this.wechat().isWechat) {
      GetWxJsConfig(function () {
        wx.scanQRCode({
          needResult: 1,
          scanType: ['qrCode', 'barCode'],
          desc: 'scanQRCode desc',
          success: function (res) {
            var result = res.resultStr.split(',') // 当needResult为1时，扫码返回的结果						
            if (typeof (callbackMethod) === 'function') {
              callbackMethod(result[result.length - 1])
            } else {
              alert('没有配置回调函数callbackMethod')
            }
          },
          error: function (res) {
            alert(res)
          }
        })
      })
    } else {
      Toast({
        message: '此环境不支持扫码！',
        icon: 'smile-opt',
        duration: 1000
      })
    }
  },

  // 获取微信地址
  getWxAdress(callbackMethod) {
    GetWxJsConfig(function () {
      wx.openAddress({
        success: function (res) {
          if (typeof (callbackMethod) === 'function') {
            callbackMethod(res)
          } else {
            alert('没有配置回调函数callbackMethod')
          }
        }
      })
    })
  },

  /**
   * 距离换算（小于100m显示"<100m"，小于1000m显示m，大于1000m显示km）
   * @param {*} distance 距离
   */
  distanceChange(distance) {
    let _distance = '距离未知'
    if (distance === 999999) {
      _distance = '距离未知'
    } else if (distance > 1000) {
      _distance = '>1000km'
    } else if (distance > 0) {
      _distance = distance.toFixed(3) + 'km'
    }
    return _distance
  },

  // 判断来源
  os() {
    var ua = navigator.userAgent
    var isWindowsPhone = /(?:Windows Phone)/.test(ua)
    var isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone
    var isAndroid = /(?:Android)/.test(ua)
    var isFireFox = /(?:Firefox)/.test(ua)
    var isChrome = /(?:Chrome|CriOS)/.test(ua)
    var isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua))
    var isIPhone = /(?:iPhone)/.test(ua) && !isTablet
    var isPc = !isIPhone && !isAndroid && !isSymbian
    return {
      isTablet,
      isIPhone,
      isAndroid,
      isWindowsPhone,
      isSymbian,
      isPc,
      isChrome,
      isFireFox
    }
  },

  // 判断是否为微信浏览器
  wechat() {
    var ua = window.navigator.userAgent.toLowerCase()
    var isWechat = (ua != null && ua.indexOf('micromessenger') !== -1)
    var isAndroidWechat = (ua != null && ua.indexOf('micromessenger') !== -1 && ua.indexOf('android') !== -1)
    var isIPhoneWechat = (ua != null && ua.indexOf('micromessenger') !== -1 && ua.indexOf('iphone') !== -1)
    return {
      isWechat, isAndroidWechat, isIPhoneWechat
    }
  },

  // 判断是否为支付宝浏览器
  isZFB() {
    const ua = window.navigator.userAgent
    if (ua.match(/Alipay/i)) {
      return true
    } else {
      return false
    }
  },

  // 引用外部js
  loadScript(url, load) {
    var el = document.createElement('script')
    el.type = 'text/javascript'
    el.src = url
    if (typeof load === 'function') {
      el.onload = function () {
        load()
      }
    }
    document.body.appendChild(el)
  },

  /**
   * 进入导航页
   * @param {*} item 参数对象，需要包含Lat，Lng，Name，ContactAddress
   */
  navigation(item) {
    // 店铺未设置经纬度则不进入导航页
    if (item.Lat === 0 && item.Lng === 0) {
      Toast.fail({
        message: '当前门店暂未提供地图导航',
        icon: 'close'
      })
      return
    }
    // 微信浏览器进入内置腾讯导航，其他浏览器进入高德导航
    if (this.wechat().isWechat) {
      GetWxJsConfig(function () {
        wx.openLocation({
          latitude: item.Lat, // 纬度，浮点数，范围为90 ~ -90
          longitude: item.Lng, // 经度，浮点数，范围为180 ~ -180。
          name: item.Name, // 位置名
          address: item.ContactAddress, // 地址详情说明
          scale: 28, // 地图缩放级别,整形值,范围从1~28。默认为最大
          infoUrl: 'http://www.gongjuji.net' // 在查看位置界面底部显示的超链接,可点击跳转（测试好像不可用）
        })
      })
    } else {
      var marker = new AMap.Marker()
      marker.markOnAMAP({ position: [item.Lng, item.Lat], name: item.Name })
    }
  },
  //隐藏分享朋友圈分享朋友按钮
  hideMenuItems(){
    if (this.wechat().isWechat) {
      GetWxJsConfig(function () {
          wx.hideMenuItems({
            menuList: ["menuItem:share:appMessage", "menuItem:share:timeline"]
        })
      })
    }
  },
  // 微信分享好友、qq
  updateAppMessageShareData(data) {
		console.log(data,"微信分享好友")
    if (this.wechat().isWechat) {
      GetWxJsConfig(function () {
        if(wx.updateAppMessageShareData){
          wx.updateAppMessageShareData({
            title: data.title, // 分享标题
            desc: data.desc, // 分享描述
            link: data.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: data.imgUrl, // 分享图标
            success: function () {
              console.log('success1')
            }
          })
        }else{
          wx.onMenuShareAppMessage({
            title: data.title, // 分享标题
            desc: data.desc, // 分享描述
            link: data.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: data.imgUrl, // 分享图标
            success: function () {
              console.log('success11')
            }
          })
        }

      })
    }
  },
	
  // 微信分享好友、qq
  updateTimelineShareData(data) {
		console.log(data,"微信分享好友2")
    if (this.wechat().isWechat) {
      GetWxJsConfig(function () {
        if(wx.updateTimelineShareData){
          wx.updateTimelineShareData({
            title: data.title, // 分享标题
            link: data.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: data.imgUrl, // 分享图标
            success: function () {
              console.log('success2')
            }
          })
        }else{
          wx.onMenuShareTimeline({
            title: data.title, // 分享标题
            link: data.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: data.imgUrl, // 分享图标
            success: function () {
              console.log('success2')
            }
          })
        }

      })
    }
  },
	
  // 获取域名
  hostUrl(url) {
    var urlstr = url.split('/') // 以“/”进行分割
    var urls = ''
    if (urlstr[2]) {
      urls = urlstr[0] + '//' + urlstr[2]
    }
    return urls
  },
  // 自定义网页标题
  changeTitle(name) {
    const _name = name || '联盟商圈'
    document.title = _name
  },

  /**
   * 数组排序
   * @param {当前项} index
   * @param {上下移操作} opt
   * @param {array} list
   */
  arraySort(index, opt, list) {
    var _list = list
    switch (opt) {
      case 'up':
        if (index <= 0) {
          Toast('已经是第一个，不能上移')
          return false
        } else {
          const _item = _list[index]
          _list[index] = _list[index - 1]
          _list[index - 1] = _item
          return _list
        }
      case 'down':
        if (index >= _list.length - 1) {
          Toast('已经是最后一个，不能下移')
          return false
        } else {
          const _item = _list[index]
          _list[index] = _list[index + 1]
          _list[index + 1] = _item
          return _list
        }
    }
  },
  /**
   * 将图片数据（string）转换为数组
   * @param {图片String} imgUrl
   */
  strToArr(imgUrl) {
    const arr = imgUrl.split(',')
    return arr
  },

  /**
   * 背景透明度渐变
   */
  changeOpacity(obj, num1, num2 = 300) {
    const _bgColor = 'rgba(255,255,255,' + (num1 / num2) + ')'
    obj.style.backgroundColor = _bgColor
  },

  /**
   * 修改数量
   * @param {商品Object} item
   * @param {数量Number} num
   * @param {库存Number} stock
   * @param {类型Number} type (加，减，输入)
   * @param {最小值Number} min
   * @param {单位比例} unitRatio
   * @param {限购数量} limit
   * @param {增量} addNum
   */
  changeAmount(item, num, stock, type, min = 0, unitRatio = 1, limit = 0,switch7 = 0, addNum = 1) {
    addNum = addNum === 0 ? 1 : addNum
    switch (type) {
      case -1:
        item.Amount = Number(item.Amount) - Number(unitRatio) * Number(addNum)
        if (item.Amount < min) {
          item.Amount = 0
        }
        break
      case 0:
				let targetAmount = Math.round(num / addNum) * addNum * unitRatio;
        // 如果targetAmount小于min,则向上取整到min
        if (targetAmount < min) {
          targetAmount = Math.ceil(min / addNum) * addNum * unitRatio;
					Toast('最少购买' + min + '件')
					break
        }
				
				item.Amount = targetAmount
				
        //if (num < min) {
        //  item.Amount = min
        //  Toast('最少购买' + min + '件')
        //  break
        //}
        if (item.Amount > stock || (item.Amount > limit && limit > 0)) {
          if (stock >= limit && limit > 0) {
            item.Amount = limit
            Toast('已达到限购数量')
          } else if(switch7 == 0){
            item.Amount = stock
            Toast('已达到最大库存')
          }
          break
        }
        break
      case 1:		
        item.Amount = Number(item.Amount) + Number(unitRatio) * Number(addNum)
        if (item.Amount > stock || (item.Amount > limit && limit > 0)) {
          if (stock >= limit && limit > 0) {
            // item.Amount = limit
            // Toast('已达到限购数量')
          } else if(switch7 == 0){
            item.Amount = stock
            Toast('已达到最大库存')
						break
          }
        }
        if (item.Amount < min) {
          item.Amount = min
					//item.Amount = Math.ceil(min / addNum) * addNum * unitRatio;
          Toast('最少购买' + min + '件')
          break
        }
        break
    }
  },

  // 获取完整图片、视频地址
  getFullUrl(url) {
    const _webInfo = Vue.prototype.$webInfo.ImgDomain || 'https://oss.hsy884.com'

    let fullUrl = require('@/assets/images/no-img.jpg')
    if (url) {
      if (url.indexOf('http') === -1) {
        fullUrl = _webInfo + url
      } else {
        fullUrl = url
      }
    }
    return fullUrl
  },

  // 自动识别地址
  AutoDistinguishAddress(name) {
    var returninfo = {
      name: '',
      address: '',
      phone: ''
    }
    name = name.replace(/(^[\"|\'])|([\"|\']$)/g, '')// 去掉前后引号//"15312345678陈晨晨福建省泉州市坪山路上海大厦"
    if (!name) {
      return returninfo
    }
    // 省
    var province = ['广东', '北京', '浙江', '福建', '湖北', '上海', '江苏', '天津', '河北', '山西', '内蒙古', '辽宁', '吉林', '黑龙江', '安徽', '江西', '山东', '河南', '湖南', '广西', '海南', '重庆', '四川', '贵州', '云南', '西藏', '陕西', '甘肃', '青海', '宁夏', '新疆', '台湾', '香港', '澳门']
    // 姓氏
    var familyName = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '楮', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许', '何', '吕', '施', '张', '孔', '曹', '严', '华', '金', '魏', '陶', '姜', '戚', '谢', '邹', '喻', '柏', '水', '窦', '章', '云', '苏', '潘', '葛', '奚', '范', '彭', '郎', '鲁', '韦', '昌', '马', '苗', '凤', '花', '方', '俞', '任', '袁', '柳', '酆', '鲍', '史', '唐', '费', '廉', '岑', '薛', '雷', '贺', '倪', '汤', '滕', '殷', '罗', '毕', '郝', '邬', '安', '常', '乐', '于', '时', '傅', '皮', '卞', '齐', '康', '伍', '余', '元', '卜', '顾', '孟', '平', '黄', '和', '穆', '萧', '尹', '姚', '邵', '湛', '汪', '祁', '毛', '禹', '狄', '米', '贝', '明', '臧', '计', '伏', '成', '戴', '谈', '宋', '茅', '庞', '熊', '纪', '舒', '屈', '项', '祝', '董', '梁', '杜', '阮', '蓝', '闽', '席', '季', '麻', '强', '贾', '路', '娄', '危', '江', '童', '颜', '郭', '梅', '盛', '林', '刁', '锺', '徐', '丘', '骆', '高', '夏', '蔡', '田', '樊', '胡', '凌', '霍', '虞', '万', '支', '柯', '昝', '管', '卢', '莫', '经', '房', '裘', '缪', '干', '解', '应', '宗', '丁', '宣', '贲', '邓', '郁', '单', '杭', '洪', '包', '诸', '左', '石', '崔', '吉', '钮', '龚', '程', '嵇', '邢', '滑', '裴', '陆', '荣', '翁', '荀', '羊', '於', '惠', '甄', '麹', '家', '封', '芮', '羿', '储', '靳', '汲', '邴', '糜', '松', '井', '段', '富', '巫', '乌', '焦', '巴', '弓', '牧', '隗', '山', '谷', '车', '侯', '宓', '蓬', '全', '郗', '班', '仰', '秋', '仲', '伊', '宫', '宁', '仇', '栾', '暴', '甘', '斜', '厉', '戎', '祖', '武', '符', '刘', '景', '詹', '束', '龙', '叶', '幸', '司', '韶', '郜', '黎', '蓟', '薄', '印', '宿', '白', '怀', '蒲', '邰', '从', '鄂', '索', '咸', '籍', '赖', '卓', '蔺', '屠', '蒙', '池', '乔', '阴', '郁', '胥', '能', '苍', '双', '闻', '莘', '党', '翟', '谭', '贡', '劳', '逄', '姬', '申', '扶', '堵', '冉', '宰', '郦', '雍', '郤', '璩', '桑', '桂', '濮', '牛', '寿', '通', '边', '扈', '燕', '冀', '郏', '浦', '尚', '农', '温', '别', '庄', '晏', '柴', '瞿', '阎', '充', '慕', '连', '茹', '习', '宦', '艾', '鱼', '容', '向', '古', '易', '慎', '戈', '廖', '庾', '终', '暨', '居', '衡', '步', '都', '耿', '满', '弘', '匡', '国', '文', '寇', '广', '禄', '阙', '东', '欧', '殳', '沃', '利', '蔚', '越', '夔', '隆', '师', '巩', '厍', '聂', '晁', '勾', '敖', '融', '冷', '訾', '辛', '阚', '那', '简', '饶', '空', '曾', '毋', '沙', '乜', '养', '鞠', '须', '丰', '巢', '关', '蒯', '相', '查', '后', '荆', '红', '游', '竺', '权', '逑', '盖', '益', '桓', '公', '万俟', '司马', '上官', '欧阳', '夏侯', '诸葛', '闻人', '东方', '赫连', '皇甫', '尉迟', '公羊', '澹台', '公冶', '宗政', '濮阳', '淳于', '单于', '太叔', '申屠', '公孙', '仲孙', '轩辕', '令狐', '锺离', '宇文', '长孙', '慕容', '鲜于', '闾丘', '司徒', '司空', '丌官', '司寇', '仉', '督', '子车', '颛孙', '端木', '巫马', '公西', '漆雕', '乐正', '壤驷', '公良', '拓拔', '夹谷', '宰父', '谷梁', '晋', '楚', '阎', '法', '汝', '鄢', '涂', '钦', '段干', '百里', '东郭', '南门', '呼延', '归', '海', '羊舌', '微生', '岳', '帅', '缑', '亢', '况', '后', '有', '琴', '梁丘', '左丘', '东门', '西门', '商', '牟', '佘', '佴', '伯', '赏', '南宫', '墨', '哈', '谯', '笪', '年', '爱', '阳', '佟', '第五', '言', '福']

    var other = []
    var nameAndaddress = ''
    var Name = ''
    var address = ''
    var phone = name.match(/((((13[0-9])|(15[^4])|(18[0,1,2,3,5-9])|(17[0-8])|(147))\d{8})|((\d3,4|\d{3,4}-|\s)?\d{7,14}))?/g)
    if (phone != null || phone !== '') {
      phone = phone.toString().replace(new RegExp(',', 'g'), '').replace(new RegExp(' ', 'g'), '')
      other = name.split(phone)

      if (other[0] === '') { // 地址在后面
        // 去掉手机号剩下的
        nameAndaddress = other[1].replace(new RegExp(' ', 'g'), '')

        for (var i = 0; i < province.length; i++) {
          if (nameAndaddress.indexOf(province[i]) === 0) { // 第一位是省份
            address = nameAndaddress
            Name = ''
            break
          } else if (nameAndaddress.indexOf(province[i]) === -1) { // 没有省份信息
            console.log('没有省份信息')
          } else { // 不在第一位
            // 截取字符串
            // 前面为姓名  后面为地址
            const index = nameAndaddress.indexOf(province[i])
            Name = nameAndaddress.substring(0, index)
            address = nameAndaddress.substring(index, nameAndaddress.length)
            break
          }
        }
      } else if (other[1] === '') { // 地址在前面
        // 去掉手机号剩下的
        nameAndaddress = other[0].replace(new RegExp(' ', 'g'), '')

        for (let i = 0; i < province.length; i++) {
          if (nameAndaddress.indexOf(province[i]) === 0) { // 第一位是省份
            for (let i = 0; i < familyName.length; i++) {
              if (nameAndaddress.lastIndexOf(familyName[i]) !== -1) { // 有姓氏
                console.log('有姓氏')
                const _index = nameAndaddress.lastIndexOf(familyName[i])
                // 截取字符串
                // 前面为地址 后面为姓氏
                address = nameAndaddress.substring(0, _index)
                Name = nameAndaddress.substring(_index, nameAndaddress.length)
                console.log(_index)
                break
              } else { // 没有姓氏
                console.log('没有姓氏')
              }
            }
            break
          } else if (nameAndaddress.indexOf(province[i]) == -1) { // 没有省份信息
            console.log('没有省份信息')
          } else { // 不在第一位
            // 截取字符串
            // 前面为姓名  后面为地址
            const index = nameAndaddress.indexOf(province[i])
            Name = nameAndaddress.substring(0, index)
            address = nameAndaddress.substring(index, nameAndaddress.length)
            break
          }
        }
        if (!Name && !address) { Name = other[0] }
      } else {
        console.log('手机号在中间')
        if (other.length > 1) {
          if (other[0].length > other[1].length) {
            address = other[0]
            Name = other[1]
            console.log('姓名在后面')
          } else if (other[0].length < other[1].length) {
            console.log('姓名在前面')
            address = other[1]
            Name = other[0]
          }
        } else if (other.length == 1) {
          Name = other[0]
        }
      }
    }

    returninfo.name = Name
    returninfo.address = address
    returninfo.phone = phone
    return returninfo
  },
  /**
   * 滚动动画
   * @param {滚动的目标位置 Number} srcollTop
   * @param {定时器间隔时间 Number} time
   * @param {元素id String} id
   */
  animateScrollTop(srcollTop, time = 30, id) {
    let _doc = document.documentElement
    if (id) {
      _doc = document.querySelector('#' + id)
    }
    const mixScrollHeight = this.getScrollHeight(id) - this.getClientHeight(id)
    const tar_top = srcollTop > mixScrollHeight ? mixScrollHeight : srcollTop
    const curr_top = _doc.scrollTop
    const _tap = (tar_top - curr_top) / 10
    const _add = tar_top > curr_top
    const time_id = setInterval(() => {
      if ((_doc.scrollTop >= tar_top && _add) || (!_add && _doc.scrollTop <= tar_top)) {
        clearInterval(time_id)
      } else {
        _doc.scrollTop += _tap
      }
    }, time)
  },

  /** 获取小数点后面的数字
  *  @param {取的位数 Number} num
  */
  get_decimal(val, num = 2) {
    return val.toFixed(2).split('.')[1].substr(0, num)
  },
  ParseDate(date) {
    console.log(date)
    date = date.replace(/-/g, "/");
    return new Date(date);
  },

  /** 记录返回页面
  *  @param {要去的地址 String} url
  */
  gotoPage(url) {
    cookies.set('back_url', window.location.href) // 记录登录返回页面
    let _url = url
    const _urlList = window.location.href.split('?')
    console.log(_urlList)
    let query = ''
    if (_urlList && _urlList.length > 1) {
      query = _urlList[_urlList.length - 1]
    console.log(query)
    }
    if (query) {
      const arr = query.split('&')
      if (arr.length > 0) {
        arr.forEach(tem => {
          if (tem.indexOf('invit_user=') !== -1) {
            _url = _url + '?' + tem
            console.log(_url)
          }
        })
      }
    }
    // window.location.href = _url
  }
}
